MIT S081 xv6-labs-2021
我之前25年年初完成了整个 MIT 6.S081 xv6 labs 2021 的课程,之前一直想把笔记整理成博客文章,最近终于抽空把它们整理成了一个专题页。 这个专题页把 MIT 6.S081 xv6 labs 2021 笔记按 lab 拆开整理。
我之前25年年初完成了整个 MIT 6.S081 xv6 labs 2021 的课程,之前一直想把笔记整理成博客文章,最近终于抽空把它们整理成了一个专题页。 这个专题页把 MIT 6.S081 xv6 labs 2021 笔记按 lab 拆开整理。
代码: ```c include "kernel/types.h" include "user/user.h" int main(int argc, char *argv[]) { if(ar
![[Pasted image 20250215093712.png]] 文件以链表方式存储。,固定大小连续存储。文件信息分别存放在链表和目录项中。 `// Disk layout: `// [
可以通过多种方式调用`mmap`,但本实验只需要与内存映射文件相关的功能子集。_您可以假设`addr`始终为零_,这意味着内核应该决定映射文件的虚拟地址。`mmap`返回该地址,如果失败则返回`0xf
[mit6.s081] 笔记 Lab2: System calls | 系统调用MIT 操作系统课程 Lab 代码笔记第 - 掘金 一种可能是整个操作系统都驻留在内核中,这样所有系统调用的实现都以管理
XV6基于Sv39 RISC-V运行,这意味着它只使用64位虚拟地址的低39位;而高25位不使用。在这种Sv39配置中,RISC-V页表在逻辑上是一个由 $2^{27}$ 个页表条目(Page Tab
- `stvec`:陷阱处理程序的地址;RISC-V跳转到这里处理陷阱。 ```riscv.h static inline uint64 r_stvec() { uint64 x; asm v
这个实验在S081 2021网站上已经没有了,参见国人翻译的实验指导书Lab5: Xv6 lazy page allocation · 6.S081 All-In-One,只能看,2020版是包含这个
准备:切换到 cow 分支 思厥先祖父,暴霜露,斩荆棘,以有尺寸之地。子孙视之不甚惜,举以予人,如弃草芥。 目前 xv6 的 fork 系统调用创建的子进程会赋值父进程所有的用户态内存,如果父进程比较
第一:当进程等待设备或管道I/O完成,或等待子进程退出,或在`sleep`系统调用中等待时,xv6使用睡眠(sleep)和唤醒(wakeup)机制切换。 第二:xv6周期性地强制切换以处理长时间计算而
_和lab8换一下顺序_ 锁提供了互斥,确保一次只有一个CPU可以持有锁。如果程序员将每个共享数据项关联一个锁,并且代码在使用一个数据项时总是持有相关联的锁,那么该项一次将只被一个CPU使用。在这种情
本步骤为xv6-riscv系统增加带首/尾星号通配符的find命令:findx,找到给定目录的文件名部分符合参数要求的所有文件。 注意事项: 1. 命令的源代码位于xv6-riscv/user/目录,
LYBTAARI1YPPOVXSQO2G982CKUL2ZBJ3 快捷键 cd .. 返回上一级目录 ctrl A+ X退出qemu - [x] 参考书: 1.2 I/O和文件描述符 · 6.S081